package modelo.persistenciaArquivo;

import modelo.dominio.TipoLocacao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

public class PersistenciaTipoLocacao {

	// Lista de Tipolocacao
	private ArrayList<TipoLocacao> tipoLocacoes = new ArrayList<TipoLocacao>();
	
	// Cadastro de Tipolocacao
	public void cadastrarTipoLocacao(TipoLocacao tipoLocacao){
	    this.tipoLocacoes.add(tipoLocacao);
	}
	
	// Obter a lista de Tipolocacao
	public ArrayList<TipoLocacao> getLocacoes() {
		return tipoLocacoes;
	}
	
	// Consultar um Tipolocacao pelo id
	public TipoLocacao consultarTipoLocacao(TipoLocacao tipoLocacao) {
		int i;
		for (i = 0; i < tipoLocacoes.size(); i++) {
			if (tipoLocacoes.get(i).getIdTipoLocacao() == tipoLocacao.getIdTipoLocacao()) {
				return tipoLocacoes.get(i);
			}
		}
		return null; //Retorna Nulo caso não encontre
	}
	
	// Gravação da lista de Tipolocacao em arquivo
	public void salvarEmArquivo(ArrayList<TipoLocacao> tipoLocacoes) throws IOException{
		int i;
		BufferedWriter writer = new BufferedWriter(new FileWriter("tipolocacoes.txt", true));
		PrintWriter output = new PrintWriter(writer);
		
		for (i = 0; i < tipoLocacoes.size(); i++) { 
			output.println (tipoLocacoes.get(i).getIdTipoLocacao() + ";"
			+ tipoLocacoes.get(i).getNomeLocacao() + ";"
			+ tipoLocacoes.get(i).getTaxaBase() + ";"
			+ tipoLocacoes.get(i).getPrecoPorKm() + ";"
			+ tipoLocacoes.get(i).getPrecoDiaria());
		}
		writer.close();
		output.close();
	}
	
	// Gravação de um objeto Tipolocacao em arquivo
	public void acrescentarAoArquivo(TipoLocacao tipoLocacao) throws IOException{
		BufferedWriter writer = new BufferedWriter(new FileWriter("tipolocacoes.txt", true));
		PrintWriter output = new PrintWriter(writer);
		
		output.println (tipoLocacao.getIdTipoLocacao() + ";"
		+ tipoLocacao.getNomeLocacao() + ";"
		+ tipoLocacao.getTaxaBase() + ";"
		+ tipoLocacao.getPrecoPorKm() + ";"
		+ tipoLocacao.getPrecoDiaria());
		writer.close();
		output.close();
	}
	
	// Leitura do arquivo
	public void lerArquivo(ArrayList<TipoLocacao> tipoLocacaos) throws IOException{
		int idTipoLocacao;
		String nomeTipoLocacao;
		double taxaBase, precoPorKm, precoDiaria;
		File arquivo = new File("tipolocacoes.txt");
		if(!arquivo.exists()){
			arquivo.createNewFile();
		}
		else {
			FileReader reader = new FileReader("tipolocacoes.txt");
			BufferedReader leitor = new BufferedReader(reader);
				
			String linha = null;
			String [] vetor = null;

			while((linha = leitor.readLine()) != null) {
				vetor = linha.split(";");
				idTipoLocacao = Integer.parseInt(vetor[0]);
				nomeTipoLocacao = vetor[1];
				taxaBase = Double.parseDouble(vetor[2]);
				precoPorKm = Double.parseDouble(vetor[3]);
				precoDiaria = Double.parseDouble(vetor[4]);
				TipoLocacao novoTipoLocacao = new TipoLocacao(idTipoLocacao,
					   nomeTipoLocacao, taxaBase, precoPorKm, precoDiaria);		
				cadastrarTipoLocacao(novoTipoLocacao);
			}
			leitor.close();
			reader.close();
		}
	}
}
